SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE Procedure [dbo].[SP_TDMOVI_BANC_I10]                  
/*-------------------------------------------------------*/          
/*---Empresa              : OFISIS S.A.                --*/          
/*---Cliente              : OFISIS                 --*/                  
/*---Sistema              : Tesoreria                  --*/          
/*---Mödulo               : Empresa                    --*/          
/*---Programa             : Grabaciön Detalle          --*/          
/*---                       Movimiento Bancos          --*/          
/*---                       (Egresos)                  --*/          
/*---Script               : tdbanc_p.sql               --*/          
/*---Nombre SP            : SP_TDMOVI_BANC_I03         --*/          
/*---Desarrollado por     : Javier Flores A.           --*/          
/*---Fecha Creaciön       : 18/06/1999                 --*/          
/*---Base Datos           : Microsoft Sql Server       --*/          
/*---Versiön              : 7.0                        --*/          
/*---Invoca a SP          :                            --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Modificado 1 por     : Eduardo Vivar Pomiano      --*/          
/*---Fecha Modificaciön   : 03/04/2001                 --*/          
/*---Detalle Modificaciön : Permite grabar docs Clientes en EGRESOS--*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Modificado 2 por     : Carlos Marquez Escobar     --*/          
/*---Fecha Modificaciön   : 25/08/2004                 --*/          
/*---Detalle Modificaciön : Cod Operac y Unidades Cont en Retencio.--*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Modificado 3 por     : Reynaldo Menacho           --*/          
/*---Fecha Modificaciön   : 22/04/2005                 --*/          
/*---Detalle Modificaciön : Busqueda del estado actual o anterior    --*/          
/*---      de los documentos             --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Modificado 4 por     : Carlos Marquez Escobar     --*/          
/*---Fecha Modificaciön   : 24/01/2005                 --*/          
/*---Detalle Modificaciön : Grabar Imp. Reten. en la Mon Factura Detalle--*/          
/*-------------------------------------------------------*/      
/*---Modificado 5 por     : Miguel Carrasco     --*/          
/*---Fecha Modificaciön   : 02/07/2009                 --*/          
/*---Detalle Modificaciön : Tipo de operacion detraccion--*/          
/*-------------------------------------------------------*/         
/*-------------------------------------------------------*/          
/*---Comentarios                                       --*/          
/*---                                                  --*/          
/*---                                                  --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Drop Proc SP_TDMOVI_BANC_I01                      --*/          
/*---Grant Execute on SP_TDMOVI_BANC_I01 to public     --*/          
/*---SP_TDMOVI_BANC_I01                                --*/          
/*-------------------------------------------------------*/          
        
 @ISCO_EMPR     TD_VC_002,                   
 @ISCO_USUA_MODI TD_VC_008_USUA,                  
 @ISCO_BANC     TD_VC_003,                   
 @ISNU_CNTA_BANC TD_VC_020,                  
 @ISAA_BNCO   TD_VC_004,                   
 @ISMM_BNCO   TD_VC_002,                   
 @ISTI_MOVI_BANC TD_VC_001,                    
 @ISNU_COMP_BANC TD_VC_008,                   
 @INNU_SECU TD_IN_001,                  
 @ISTI_ENTI   TD_VC_001,                   
 @ISCO_ENTI   TD_VC_020,                  
 @ISTI_DOCU_ENTI TD_VC_003,                  
 @ISNU_DOCU_ENTI TD_VC_020,                  
 @ISCO_MONE_DOCU TD_VC_003,                  
 @IDFE_DOCU   TD_DT_001,                  
 @IDFE_EMIS   TD_DT_001,                  
 @IDFE_PROG   TD_DT_001,                  
 @INIM_DOCU   TD_NU_016_004,                  
 @INIM_SALD_DOCU TD_NU_016_004,                  
 @INIM_DETA   TD_NU_016_004,                   
 @ISDE_OBSE   TD_VC_100,                  
 @ISST_CIER_DOCU TD_VC_001_SINO,                  
 @ISTI_DOCU   TD_VC_003,                  
 @INFA_TIPO_CAMB TD_NU_015_006,                  
 @ISCO_MONE   TD_VC_003,                    
 @INIM_SALD_CONV TD_NU_016_004,                  
 @INIM_DETA_NEGA TD_NU_016_004,                  
 @ISNU_CORR_COMP TD_VC_020,                  
 @ISTI_MOVI_OPER TD_VC_001,                  
 @ISCO_CNTA_EMPR TD_VC_020,                  
 @ISCO_ORDE_SERV TD_VC_020,                  
 @INNU_SECU_PRPA TD_IN_001,        
 @ISCO_UNID_CNTB TD_VC_003,        
 @INFA_CAMB_EXTR TD_NU_015_006        
        
 As          
Declare                   
    @VNNU_SECU TD_IN_001,     @VNIM_MOVI_ANTE  TD_NU_016_004,  @VNIM_TOTA TD_NU_016_004,                  
    @VNIM_CONV_ANTE TD_NU_016_004,   @VNNU_REGI TD_IN_001,    @VSST_SIGN TD_VC_001,                  
    @VNIM_TOTA_CLIE TD_NU_016_004, @VNIM_TOTA_PROV  TD_NU_016_004, @VNIM_CONV_DOCU TD_NU_016_004,                  
    @VSCO_MONE_NACI TD_VC_003, @VSCO_MONE_EXTR TD_VC_003       , @VSCO_TIPO_EGRE  TD_VC_003,                  
    @VSCO_UNID_CONC TD_VC_003,                  
    @VSCO_ESTA_LETR   TD_VC_003, @VSTI_DOCU_RETE   TD_VC_003,                   
    @VSNO_ENTI TD_VC_100, @VSNU_RUCC TD_VC_020,                   
    @VSNU_CHEQ TD_VC_020, @VSNU_DOCU_BANC TD_VC_020,                  
    @VSNU_COMP_BACA TD_VC_020,                   
    @VNIM_TOTA_DIST TD_NU_016_004, @VSTI_CAMB TD_VC_001, @VSTI_ORIG TD_VC_001, @VDFE_OPER TD_DT_001,                  
    @VSCO_COND_CONT TD_VC_003, @VSNU_SERI TD_VC_008, @VSST_APRO_CXPA TD_VC_001, @VNNU_CONT TD_IN_001,              
    @VSCO_ESTA_ORIG TD_VC_001,@VSCO_TIPO_OPER TD_VC_003, @VSST_PAGO_DETR TD_VC_001,@VSST_DETR_CALC TD_VC_001,    
    @INIM_DETR_CALC TD_NU_016_004             
          
 Begin Tran SP_TDMOVI_BANC_I01                  
                  
 Select @VSCO_MONE_NACI = CO_MONE_DEFA,                  
   @VSCO_MONE_EXTR = CO_MONE_EXTR,                  
   @VSCO_COND_CONT = CO_COND_CONT,                  
   @VSCO_TIPO_EGRE = CO_TIPO_OPEG,  ---- Egreso o Cargo                  
   @VSST_APRO_CXPA = ST_APRO_CXPA                  
 From TMPARA_TESO                  
 Where CO_EMPR = @ISCO_EMPR                  
           
 -- Documento Retencion ---          
 Select @VSTI_DOCU_RETE = TI_DOCU                  
 From TTDOCU_CNTB                  
 Where ST_DOCU_0021 = 'S'                  
           
 If Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''              
 -- Se busca el estado actual del documento              
 Exec SP_TTESTA_ORIG_Q02 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @VSCO_ESTA_ORIG output              
           
 If @ISCO_MONE_DOCU != @ISCO_MONE                  
 Begin                  
  Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                  
  From TTFACA_OPCI                  
  Where CO_EMPR = @ISCO_EMPR                  
  And CO_MODU = 'TEEM0001'                  
  And CO_MENU = 'FTEEMAI'                  
            
  If ( @VSTI_CAMB Is Null Or @VSTI_ORIG Is Null )                  
   Select @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG                  
   From TMPARA_TESO                  
   Where CO_EMPR = @ISCO_EMPR                  
           
  Select @VDFE_OPER = FE_OPER,                  
    @VSCO_UNID_CONC = CO_UNID_CONC,    
    @VSCO_TIPO_OPER = CO_TIPO_OPER,     
    @VSST_PAGO_DETR = ST_PAGO_DETR                 
  From   TCMOVI_BANC                  
  Where  CO_EMPR = @ISCO_EMPR                   
  and    CO_UNID_CONC = @ISCO_UNID_CNTB        
  and    CO_BANC = @ISCO_BANC                   
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                    
  and    AA_BNCO = @ISAA_BNCO                  
  and    MM_BNCO = @ISMM_BNCO                   
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                  
  and    NU_COMP_BANC = @ISNU_COMP_BANC                   
           
  Select @VNIM_CONV_DOCU = (Select OFITESO.dbo.FN_TCFACT_CAMB_Q05(@ISCO_MONE, @ISCO_MONE_DOCU,                   
  @VDFE_OPER, @INIM_DETA, @VSTI_CAMB, @VSTI_ORIG, 'N', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB))                  
           
  Select @VNIM_CONV_DOCU = Round(@VNIM_CONV_DOCU, 2)                  
 End                  
 Else     
 Begin                  
  Select @VSCO_UNID_CONC = CO_UNID_CONC,    
  @VSCO_TIPO_OPER = CO_TIPO_OPER,    
  @VSST_PAGO_DETR = ST_PAGO_DETR                 
  From   TCMOVI_BANC                  
  Where  CO_EMPR = @ISCO_EMPR        
  and    CO_UNID_CONC = @ISCO_UNID_CNTB        
  and    CO_BANC = @ISCO_BANC                   
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                    
  and    AA_BNCO = @ISAA_BNCO                  
  and    MM_BNCO = @ISMM_BNCO                   
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                  
  and    NU_COMP_BANC = @ISNU_COMP_BANC                   
            
  Select @VNIM_CONV_DOCU = @INIM_DETA                          
           
 End                  
           
 If @INNU_SECU IS NULL                  
 Begin                  
    
  Select @VNNU_SECU   = NU_SECU                  
  From   TDMOVI_BANC                  
  Where  CO_EMPR = @ISCO_EMPR                  
  and    CO_UNID_CONC = @ISCO_UNID_CNTB        
  and    CO_BANC = @ISCO_BANC                  
  and    NU_CNTA_BANC = @ISNU_CNTA_BANC                  
  and    AA_BNCO = @ISAA_BNCO                  
  and    MM_BNCO = @ISMM_BNCO             
  and    TI_MOVI_BANC = @ISTI_MOVI_BANC                  
  and    NU_COMP_BANC = @ISNU_COMP_BANC                  
           
  If @VNNU_SECU > 0                  
   Select @VNNU_SECU = @VNNU_SECU + 1                  
  Else                  
   Select @VNNU_SECU = 1                     
           
  Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) From #TWRETE_BANC                
           
  IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0                
  Begin                  
   Select @VSNU_SERI = Substring(@ISNU_DOCU_ENTI, 1, Patindex('%-%', @ISNU_DOCU_ENTI)-1)                   
   /* Genero el œltimo correlativo para el documento comp. de retenci½n */                  
   Exec SP_TTULTI_CORR_I01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISTI_DOCU_ENTI, @VSNU_SERI, @ISNU_DOCU_ENTI OUTPUT                  
  End                  
      
         
 ---------- TIPO DE OPERACION DETRACCION ---------      
   SELECT @VSST_DETR_CALC = ST_DETR_CALC    
   FROM TTTIPO_OPER    
   WHERE CO_EMPR = @ISCO_EMPR    
   AND CO_TIPO_OPER = @VSCO_TIPO_OPER    
    
  IF ISNULL(@VSST_DETR_CALC,'N') = 'S' AND ISNULL(@VSST_PAGO_DETR,'N') = 'S'    
   BEGIN    
     SET @INIM_DETR_CALC = @INIM_DETA    
   END     
  ELSE    
   BEGIN     
     SET @INIM_DETR_CALC = 0    
   END    
     
 -----------------------------------------------------     
      
  Insert into TDMOVI_BANC (CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC,                  
  NU_COMP_BANC, NU_SECU, TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, CO_MONE_DOCU, FE_EMIS,               
  FE_DOCU, FE_PROG, IM_DOCU, IM_SALD_DOCU, IM_DETA, IM_CONV_DOCU, DE_OBSE, ST_CIER_DOCU,               
  IM_DETA_NEGA, IM_SALD_CONV, NU_CORR_COMP, TI_MOVI_OPER, CO_CNTA_EMPR, CO_ORDE_SERV,               
  NU_SECU_PRPA, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI, CO_UNID_CONC, FA_CAMB_EXTR,IM_DETR_CALC)        
  Values (@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC,                  
  @ISNU_COMP_BANC, @VNNU_SECU, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI, @ISCO_MONE_DOCU,                 
@IDFE_EMIS, @IDFE_DOCU, @IDFE_PROG, @INIM_DOCU, @INIM_SALD_DOCU, @INIM_DETA, @VNIM_CONV_DOCU,                   
  @ISDE_OBSE, @ISST_CIER_DOCU, @INIM_DETA_NEGA , @INIM_SALD_CONV, @ISNU_CORR_COMP, @ISTI_MOVI_OPER,               
  @ISCO_CNTA_EMPR, @ISCO_ORDE_SERV, @INNU_SECU_PRPA, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE(),     
  @ISCO_UNID_CNTB, @INFA_CAMB_EXTR,@INIM_DETR_CALC)        
       
          
  If @@error <> 0                  
  Begin        
   Rollback Tran SP_TDMOVI_BANC_I01          
   Return          
  End                      
           
  If @VSST_APRO_CXPA = 'S'                  
  Begin              
   Update TDPROG_PAGO                  
   Set   TI_SITU = 'PAG',            
   CO_USUA_MODI = @ISCO_USUA_MODI,                 
   FE_USUA_MODI = Getdate()                         
   Where CO_EMPR     = @ISCO_EMPR                  
   And  CO_PROV      = @ISCO_ENTI                  
   And  CO_TIPO_DOCU = @ISTI_DOCU_ENTI                  
   And  NU_DOCU_PROV = @ISNU_DOCU_ENTI                  
   And  NU_SECU      = @INNU_SECU_PRPA                  
             
   If @@error <> 0                  
   Begin                  
    Rollback Tran SP_TDMOVI_BANC_I01                  
    Return                  
   End                      
  End              
           
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''              
  Begin              
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos       
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,               
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU              
             
   If @@error <> 0                
   Begin                
    Rollback Tran SP_TDMOVI_BANC_I01               
    Return                
   End                    
  End              
  Else               
   If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''              
   Begin              
    --Se cancela el documento y se graba en tabla de kardex de estados de documentos              
    Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,               
    @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU              
              
    If @@error <> 0                
    Begin                
     Rollback Tran SP_TDMOVI_BANC_I01               
     Return                
    End                    
   End               
  End                  
 Else                   
 Begin                  
  Select @VNIM_CONV_ANTE = Isnull(IM_CONV_DOCU,0)                  
  From  TDMOVI_BANC                   
  Where CO_EMPR = @ISCO_EMPR                  
  And   CO_UNID_CONC = @ISCO_UNID_CNTB        
  And   CO_BANC = @ISCO_BANC                  
  And   NU_CNTA_BANC = @ISNU_CNTA_BANC              
  And   AA_BNCO = @ISAA_BNCO                  
  And   MM_BNCO = @ISMM_BNCO                  
  And   TI_MOVI_BANC = @ISTI_MOVI_BANC                  
  And   NU_COMP_BANC = @ISNU_COMP_BANC                  
  And   NU_SECU = @INNU_SECU            
    
 ------- DETRACCION -----    
    
   SELECT @VSST_DETR_CALC = ST_DETR_CALC    
   FROM TTTIPO_OPER    
   WHERE CO_EMPR = @ISCO_EMPR    
   AND CO_TIPO_OPER = @VSCO_TIPO_OPER    
    
    
    IF ISNULL(@VSST_DETR_CALC,'N') = 'S' AND ISNULL(@VSST_PAGO_DETR,'N') = 'S'    
   BEGIN    
     SET @INIM_DETR_CALC = @INIM_DETA    
   END     
  ELSE    
   BEGIN     
     SET @INIM_DETR_CALC = 0    
   END           
           
  --------------------------------------    
    
  IF RTRIM(ISNULL(@ISCO_CNTA_EMPR, '')) = ''                
   Update TDMOVI_BANC                 
   Set IM_DETA = @INIM_DETA,                
   IM_CONV_DOCU = @VNIM_CONV_DOCU,               
   DE_OBSE = @ISDE_OBSE,                
   ST_CIER_DOCU = @ISST_CIER_DOCU,                
   IM_DETA_NEGA = @INIM_DETA_NEGA,    
   IM_DETR_CALC = @INIM_DETR_CALC,              
   FE_USUA_MODI = getdate(),                
   CO_USUA_MODI = @ISCO_USUA_MODI                
   Where CO_EMPR = @ISCO_EMPR                
   and   CO_UNID_CONC = @ISCO_UNID_CNTB        
   And   CO_BANC = @ISCO_BANC                
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC                
   And   AA_BNCO = @ISAA_BNCO                
   And   MM_BNCO = @ISMM_BNCO                
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC                
   And   NU_COMP_BANC = @ISNU_COMP_BANC                
   And   NU_SECU = @INNU_SECU                
  ELSE                
   Update TDMOVI_BANC                 
   Set TI_MOVI_OPER = @ISTI_MOVI_OPER,                
   CO_CNTA_EMPR = @ISCO_CNTA_EMPR,                
   TI_ENTI = @ISTI_ENTI,                
   CO_ENTI = @ISCO_ENTI,                
   CO_ORDE_SERV = @ISCO_ORDE_SERV,               
   IM_DETA = @INIM_DETA,                
   IM_CONV_DOCU = @VNIM_CONV_DOCU,                              
   DE_OBSE = @ISDE_OBSE,                
   ST_CIER_DOCU = @ISST_CIER_DOCU,                
   IM_DETA_NEGA = @INIM_DETA_NEGA,     
   IM_DETR_CALC = @INIM_DETR_CALC,                
   FE_USUA_MODI = getdate(),                
   CO_USUA_MODI = @ISCO_USUA_MODI                
   Where CO_EMPR = @ISCO_EMPR                
   And   CO_UNID_CONC = @ISCO_UNID_CNTB        
   And   CO_BANC = @ISCO_BANC                
   And   NU_CNTA_BANC = @ISNU_CNTA_BANC                
   And   AA_BNCO = @ISAA_BNCO                
   And   MM_BNCO = @ISMM_BNCO                
   And   TI_MOVI_BANC = @ISTI_MOVI_BANC                
   And   NU_COMP_BANC = @ISNU_COMP_BANC                
   And   NU_SECU = @INNU_SECU                
           
  If @@error <> 0                  
  Begin                  
   Rollback Tran SP_TDMOVI_BANC_I01                  
   Return                  
  End                      
           
  Select @VNIM_CONV_DOCU = @VNIM_CONV_DOCU - @VNIM_CONV_ANTE              
            
  If @ISST_CIER_DOCU = 'S' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''              
  Begin              
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos              
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,               
   @VNIM_CONV_DOCU, 'PAG', @ISCO_USUA_MODI, @ISST_CIER_DOCU              
             
   If @@error <> 0                
   Begin                
   Rollback Tran SP_TDMOVI_BANC_I01               
   Return                
   End                    
  End              
  Else               
  If @ISST_CIER_DOCU = 'N' And Rtrim(Isnull(@ISCO_CNTA_EMPR, '')) = ''              
  Begin              
   --Se cancela el documento y se graba en tabla de kardex de estados de documentos              
   Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @ISTI_ENTI, @ISCO_ENTI, @ISTI_DOCU_ENTI, @ISNU_DOCU_ENTI,               
   @VNIM_CONV_DOCU, @VSCO_ESTA_ORIG, @ISCO_USUA_MODI, @ISST_CIER_DOCU              
             
   If @@error <> 0                
   Begin                
    Rollback Tran SP_TDMOVI_BANC_I01               
    Return                
   End                    
  End              
           
 End                  
           
 Select @VNIM_MOVI_ANTE  = Isnull(IM_MOVI,0)                   
 From   TCMOVI_BANC                  
 Where  CO_EMPR = @ISCO_EMPR                   
 and    CO_UNID_CONC = @ISCO_UNID_CNTB        
 and    CO_BANC = @ISCO_BANC                   
 and    NU_CNTA_BANC = @ISNU_CNTA_BANC                    
 and    AA_BNCO = @ISAA_BNCO                  
 and    MM_BNCO = @ISMM_BNCO                   
 and    TI_MOVI_BANC = @ISTI_MOVI_BANC                  
 and    NU_COMP_BANC = @ISNU_COMP_BANC                   
           
 /* Sumo todos los documentos de clientes */                  
           
 Select @VNIM_TOTA_CLIE = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)             From TDMOVI_BANC                  
 Where CO_EMPR = @ISCO_EMPR                  
 and   CO_UNID_CONC = @ISCO_UNID_CNTB        
 And   CO_BANC = @ISCO_BANC                  
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                  
 And   AA_BNCO = @ISAA_BNCO         
 And   MM_BNCO = @ISMM_BNCO                  
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                  
 And   NU_COMP_BANC = @ISNU_COMP_BANC          
 And  TI_ENTI = 'C'                  
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''                  
           
 /* Sumo todos los documentos de proveedores */                  
           
 Select @VNIM_TOTA_PROV = Isnull(Sum(Isnull(IM_DETA_NEGA,0)),0)                  
 From TDMOVI_BANC                  
 Where CO_EMPR = @ISCO_EMPR                  
 and   CO_UNID_CONC = @ISCO_UNID_CNTB        
 And   CO_BANC = @ISCO_BANC                  
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                  
 And   AA_BNCO = @ISAA_BNCO                  
 And   MM_BNCO = @ISMM_BNCO                  
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                  
 And   NU_COMP_BANC = @ISNU_COMP_BANC                  
 And   TI_ENTI = 'P'                  
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) = ''                  
           
 Select  @VNIM_TOTA_DIST = Isnull(Sum(Isnull(PatIndex(TI_MOVI_OPER, 'C')* IM_DETA - PatIndex(TI_MOVI_OPER, 'A')*        
IM_DETA,0)),0)                   
 From  TDMOVI_BANC                  
 Where CO_EMPR = @ISCO_EMPR                  
 and CO_UNID_CONC = @ISCO_UNID_CNTB        
 And CO_BANC = @ISCO_BANC                  
 And NU_CNTA_BANC = @ISNU_CNTA_BANC                  
 And AA_BNCO = @ISAA_BNCO                  
 And MM_BNCO = @ISMM_BNCO                  
 And TI_MOVI_BANC = @ISTI_MOVI_BANC                  
 And NU_COMP_BANC = @ISNU_COMP_BANC                  
 And RTRIM(ISNULL(CO_CNTA_EMPR, '')) != ''                  
           
 Select  @VNIM_TOTA = @VNIM_TOTA_PROV + @VNIM_TOTA_CLIE + ISNULL(@VNIM_TOTA_DIST,0)                  
           
 Update TCMOVI_BANC                  
 Set IM_MOVI = Round(@VNIM_TOTA,2),                  
 CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                           
 Where CO_EMPR = @ISCO_EMPR                   
 And   CO_UNID_CONC = @ISCO_UNID_CNTB        
 And   CO_BANC = @ISCO_BANC                   
 And   NU_CNTA_BANC = @ISNU_CNTA_BANC                   
 And   AA_BNCO = @ISAA_BNCO                  
 And   MM_BNCO = @ISMM_BNCO                   
 And   TI_MOVI_BANC = @ISTI_MOVI_BANC                   
 And   NU_COMP_BANC = @ISNU_COMP_BANC                   
           
 If @@error <> 0                  
 Begin                  
  Rollback Tran SP_TDMOVI_BANC_I01                 
  Return                  
 End                    
           
 Select @VNNU_CONT = IsNull(Count (CO_EMPR),0) From #TWRETE_BANC                
           
 /* PARA COMPROBANTES DE RETENCION*/                  
           
 IF @ISTI_DOCU_ENTI = @VSTI_DOCU_RETE And @VNNU_CONT != 0                
 BEGIN                  
           
  Select  @VSNO_ENTI = NO_AUXI, @VSNU_RUCC = NU_RUCS                  
  From  TMAUXI_EMPR                   
  Where  CO_EMPR = @ISCO_EMPR                  
  And TI_AUXI_EMPR = @ISTI_ENTI                  
  And CO_AUXI_EMPR = @ISCO_ENTI                  
            
  Select  @VSNU_CHEQ = ISNULL(NU_CHEQ, ''),                   
  @VSNU_DOCU_BANC = ISNULL(NU_DOCU_BANC, '')                  
  From  TCMOVI_BANC                  
  Where  CO_EMPR = @ISCO_EMPR                   
  And CO_UNID_CONC = @ISCO_UNID_CNTB        
  And CO_BANC = @ISCO_BANC                   
  And NU_CNTA_BANC = @ISNU_CNTA_BANC                   
And AA_BNCO = @ISAA_BNCO                  
  And MM_BNCO = @ISMM_BNCO                   
  And TI_MOVI_BANC = @ISTI_MOVI_BANC                   
  And NU_COMP_BANC = @ISNU_COMP_BANC                   
           
           
  Select @VSNU_COMP_BACA = Case Len(Rtrim(Ltrim(@VSNU_CHEQ)))                  
  When 0 Then  @VSNU_DOCU_BANC                  
  Else @VSNU_CHEQ                  
 End                  
           
  Insert Into TCCOMP_RETE                  
  (CO_EMPR, NU_COMP_RETE, FE_COMP_RETE, FA_TIPO_CAMB, CO_PROV, NO_PROV, NU_RUCC, CO_MONE,                  
  CO_BANC, NU_CNTA_BANC, AA_BACA, MM_BACA, NU_COMP_BACA, NU_DOCU, TI_SITU, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI,        
FE_USUA_MODI)                  
  Values (@ISCO_EMPR, @ISNU_DOCU_ENTI, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_ENTI, @VSNO_ENTI, @VSNU_RUCC, @ISCO_MONE_DOCU,        
@ISCO_BANC, @ISNU_CNTA_BANC,                  
  @ISAA_BNCO, @ISMM_BNCO, @ISNU_COMP_BANC, @VSNU_COMP_BACA, 'ACT', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())         
                
            
  If @@error <> 0                  
  Begin                  
   Rollback Tran SP_TDMOVI_BANC_I01                  
   Return                  
 End                    
           
 Insert Into TDCOMP_RETE                  
 (CO_EMPR, NU_COMP_RETE,NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS,           
  IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV,           
  IM_COMP_PAGO,          
  CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                  
 Select  CO_EMPR, @ISNU_DOCU_ENTI, NU_SECU, TI_DOCU, NU_DOCU, FE_EMIS,           
  IM_TOTA_CONV, IM_RETE_CONV, IM_PAGO_CONV,           
  ( dbo.FN_TCFACT_CAMB_Q02(@VSCO_MONE_NACI, @ISCO_MONE, @VDFE_OPER, IM_RETE_CONV, @VSTI_CAMB, @VSTI_ORIG, 'S',        
@VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB) ) IM_COMP_PAGO,          
  @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE()              
 From #TWRETE_BANC          
 Where           
 CO_EMPR = @ISCO_EMPR And          
 CO_PROV = @ISCO_ENTI          
          
           
 If @@error <> 0                  
 Begin                  
  Rollback Tran SP_TDMOVI_BANC_I01                  
  Return                  
 End                  
           
           
 Insert Into              
  TMDOCU_PROV(CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,                   
  CO_TIPO_OPER, CO_COND_PAGO, CO_UNID_CONC, FE_VENC,                   
  FE_EMIS, FE_RECE, FE_PROG_PAGO, FE_REGI_COMP, FA_TIPO_CAMB, CO_MONE,                   
  IM_BRUT_AFEC, IM_BRUT_INAF, IM_GAFI, IM_MORA, IM_FLET,                   
  ST_AFEC_GAFI, ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN,                   
  ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF, ST_DCT2_BRIN,                   
  ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET, PC_DCT1, IM_DCT1,                   
  PC_DCT2, IM_DCT2, PC_IMP1, IM_IMP1,                   
  PC_IMP2, IM_IMP2, PC_IMP3, IM_IMP3, IM_TOTA,                   
  IM_PAGA, CO_ESTA_DOCU, ST_CONT, TI_PROV, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                  
 Values( @ISCO_EMPR, @ISCO_ENTI, @VSTI_DOCU_RETE, @ISNU_DOCU_ENTI,                   
  @VSCO_TIPO_EGRE, @VSCO_COND_CONT, @VSCO_UNID_CONC, @IDFE_DOCU,                   
  @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @IDFE_DOCU, @INFA_TIPO_CAMB, @ISCO_MONE_DOCU,                  
  @INIM_DOCU, 0, 0, 0, 0,                  
  'N', 'N', 'N','N', 'N',                   
  'N', 'N', 'N','N', 'N',                   
  'N', 'N', 'N', 0, 0,                   
  0, 0, 0, 0,                   
  0, 0, 0, 0, @INIM_DOCU,                  
  @INIM_DOCU, 'PAG', 'N', 'J', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())              
           
 If @@error <> 0                  
 Begin                  
  Rollback Tran SP_TDMOVI_BANC_I01                  
  Return                  
 End                  
           
 Delete #TWRETE_BANC          
 Where           
 CO_EMPR = @ISCO_EMPR And          
 CO_PROV = @ISCO_ENTI          
          
           
 END                  
 /* Fin para Comprobantes de Retenci«n */                   
                  
commit Tran SP_TDMOVI_BANC_I01                  
                  
/*------------------------ Fin ------------------------------*/
GO
